SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE  [dbo].[LIQAcuerdoParitaria1908]
@Agente INT,
@Servicio INT,
@Plaza INT,
@Resultado DECIMAL(18,4) output,
@idLiquidacion INT,
@DiasALiquidar INT,
@DiasDelPeriodo INT,
@Desde DATETIME,
@Hasta DATETIME
AS 

SET NOCOUNT ON
SET DATEFORMAT DMY 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- REGISTRO DE ACTUALIZACIONES
-- 18/03/2008 - Creado en Base a  LIQEstimuloLey2088'
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


DECLARE @MontoEstimulo DECIMAL(18,4)
DECLARE @TotalRemunerativo DECIMAL(18,4)
DECLARE @Afiliacion INT, @regimensalarial  INT, @organizacion INT, @situacionrevista INT
DECLARE @NroError INT
DECLARE @SubOrganizacion INT
DECLARE @CargoSalarial INT, @Porcentaje INT, @Estimulo DECIMAL(18,4), @Horas INT, @TotalEstimulo DECIMAL(18,4), @TotalEstimuloEstado DECIMAL(18,4), @EstimuloTemporal DECIMAL(18,4)
DECLARE @SueldoBasico DECIMAL(18,4)
DECLARE @EstimuloNoEducativo DECIMAL(18,4)
DECLARE @MesLiq INT
DECLARE @AnioLiq INT 
DECLARE @CabeceraDeLiquidacion INT
DECLARE @ImporteFueraDelSistema DECIMAL(18,4) 
DECLARE @OrganizacionCobro INT 
DECLARE @PagarPorPrivado  VARCHAR(1)


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT @MesLiq = MONTH(@Desde)
SELECT @AnioLiq = YEAR(@Desde)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

SELECT @Estimulo = 0.0, @EstimuloTemporal = 0.0, @TotalEstimulo = 0.0, @TotalEstimuloEstado = 0.0, @EstimuloNoEducativo = 0.0

SELECT @Afiliacion = idAfiliacion FROM tb_Afiliaciones WHERE idAgente = @Agente
SELECT @horas= horas, @regimensalarial = regimensalarial, @SubOrganizacion = SubOrganizacion FROM tb_Plazas WHERE idPlaza = @Plaza
SELECT @Organizacion = ubicacionOrig, @SituacionRevista = SituacionRevista FROM tb_ServiciosAgentes WHERE idservicioAgente =  @Servicio

IF (SELECT OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE idSubOrganizacion = @SubOrganizacion) Is Not Null
	SELECT @Organizacion = OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE idSubOrganizacion = @SubOrganizacion

-- Busco si corresponde pagarle por esta organizacion

SET @OrganizacionCobro = 0
SET @PagarPorPrivado = 'N'

EXEC dbo.LiqObtenerOrganizacionPagoConcepto @Agente, @Organizacion,@Desde,@Hasta,44, 4, @OrganizacionCobro OUTPUT, @PagarPorPrivado OUTPUT


--Si el agente tiene que cobrar los estímulos en esta Organizacion y no cobró el estímulo en otro servicio.

IF @Organizacion = @OrganizacionCobro
	AND NOT EXISTS(SELECT * FROM tb_RegistroDeLiquidaciones WHERE Liquidacion = @IdLiquidacion AND Concepto = 44  AND MontoHaberes > 0 AND Agente = @Agente)

BEGIN	

	SELECT @SueldoBasico = MontoHaberes FROM tb_RegistroDeLiquidaciones WHERE Concepto = 4 And Servicio = @Servicio And Liquidacion = @idLiquidacion

	SELECT @MontoEstimulo = CONVERT(DECIMAL(18,4), dbo.fnObtenerValorDeParametro ('ImporteAcuerdoParitaria19/08', @Hasta))

	
	SELECT @Estimulo = Monto FROM tb_MontosDeConceptosDelAgente WHERE Agente = @Agente AND Concepto = 44 AND Mes=@MesLiq AND Anio=@AnioLiq

	IF @Estimulo > @MontoEstimulo
		SELECT @Estimulo = @MontoEstimulo

	-- Ojo, son pocos a los que estan nunca les pagamos el importe estimulo
	SELECT @ImporteFueraDelSistema = Porcentaje * @MontoEstimulo / 100 FROM tb_AgentesConEstimulo WHERE Agente = @Agente
	-- Se proporciona a los días trabajados.
	-- Para el primer mes que arranca no proporciono si tuvo mas días que el periodo
	If @DiasALiquidar <=@DiasDelPeriodo 
			SELECT @Estimulo = ((@DiasALiquidar * @Estimulo) /  @DiasDelPeriodo ) - ISNULL(@ImporteFueraDelSistema,0)
	Else
			SELECT @Estimulo = ( @Estimulo)  - ISNULL(@ImporteFueraDelSistema,0)
	
	IF @Estimulo < 0
		SELECT @Estimulo = 0.0

	IF @SueldoBasico > 0
	BEGIN
		INSERT INTO tb_RegistroDeLiquidaciones (AfectadosPorAjuste, Afiliacion, Agente, Ajuste, Cantidad, Cargosalarial, Concepto, Descripcion, DescuentoExterno, Desde, Dias, Embargo, Hasta, Horas, LegajoSalarial, Liquidacion, MontoDescuento, MontoHaberes, Organizacion, Reclamado, Servicio, SituacionRevista, DiasLiquidados, SubOrganizacion)
		VALUES (null, @Afiliacion, @Agente, null, 1, null, 44, null, null, null, null, null, null, @horas, 0, @idLiquidacion, 0, @Estimulo, @Organizacion, null, @Servicio, @SituacionRevista, @diasALiquidar, @SubOrganizacion)

		SELECT @NroError = @@error

		IF @NroError <> 0
		BEGIN
			SELECT @CabeceraDeLiquidacion = IdCabeceraLiquidacion FROM tb_Liquidaciones WHERE IdLiquidacion = @IdLiquidacion

			INSERT INTO tb_ErroresLiquidacion (Agente, Concepto, Diagnostico, Fecha, Liquidacion, Organizacion, Servicio, CabeceraDeLiquidacion, NumeroDeError) VALUES
			(@Agente, 44, convert(varchar,@NroError), getdate(), @idLiquidacion, @Organizacion, @Servicio, @CabeceraDeLiquidacion, @NroError)
		END
	END
END
GO
